#include "partido.h"

#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
//modificado 10/11 Joaquin Blanco 94653
struct partido {
					bool jugado;
					char *local;
					char *visitante;
					int gloc;
					int gvis;
				};

partido_t *partido_crear(const char *local, const char *visitante)
{
	if (!local && !visitante)
		return NULL;	// Al menos un equipo debe ser válido.

	partido_t *partido = malloc(sizeof(partido_t));

	if (!partido)
		return NULL;

	if (local)
		{
			partido->local = malloc(sizeof(char)*(strlen(local)+1));
			if (!partido->local)
				{
					free(partido);
					return NULL;
				}

			strcpy(partido->local,local);
		}

	if (visitante)
		{
			partido->visitante = malloc(sizeof(char)*(strlen(visitante)+1));
			if (!partido->visitante)
				{
					if (partido->local)
						free(partido->local);
					free(partido);
					return NULL;
				}

			strcpy(partido->visitante,visitante);
		}
    
    partido->gloc = 0;
    partido->gvis = 0;
	partido->jugado = false;

    return partido;
}

void partido_destruir(partido_t *partido)
{
    if (!partido)
      return;

    free(partido->local);
    free(partido->visitante);
    free(partido);
}


const char *partido_obtener_local(const partido_t *partido)
{
    if (!partido)
      return NULL;

    return partido->local;  
}


const char *partido_obtener_visitante(const partido_t *partido)
{
    if (!partido)
      	return NULL;

    return partido->visitante;  
}

bool partido_jugado (const partido_t *partido)
{
	if (!partido)
		return false;

	return partido->jugado;
}

int partido_obtener_gloc(const partido_t *partido)
{
    if (!partido)
      	return -1;

	if (!partido_jugado(partido))
		return -1;

  	return partido->gloc;  
}


int partido_obtener_gvis(const partido_t *partido)
{
    if (!partido)
      	return -1;

	if (!partido_jugado(partido))
		return -1;

    return partido->gvis; 
}


const char *partido_obtener_ganador(const partido_t *partido)
{
  	if (!partido)
    	return NULL;

	if (!partido_jugado(partido))
		return NULL;

  return partido_obtener_gloc(partido) > partido_obtener_gvis(partido) ? partido->local:partido->visitante;
}

void partido_actualizar (partido_t *partido, int gloc, int gvis)
{
	if (!partido)
		return;
	
	if (partido_jugado(partido))
		return;
	
	partido->gloc = gloc;
	partido->gvis = gvis;
	partido->jugado = true;
}



//modificado 10/11 
